var tactics_sdk_data = {
  auditOnline: 0,//是否审核中 1为审核中 2为审核通过
  tacticsName: "",// 策略路由名称
  isTacticsSdkInit: false, // 策略路由SDK是否初始化
  popupConfigData: {}, // 弹窗配置文件
  currentBoostConfig: {},
}
// 默认应用配置 查漏补缺
import defalutAppConfig from '../json/defaultAppConfig.json'
// 策略密钥配置
import secretKeyConfig from '../json/tacticsSecret.json'
/**
 * 校验策略返回的应用配置数据是否完整
 * @param {Object} configInfo 策略返回的自定义应用配置数据
 * @returns 查漏补缺后的完成应用配置数据
 */
function validataTacticSdkConfigInfo(configInfo) {
  let curConfigData = Object.assign({}, configInfo)
  let retConfigData = {}
  let defalutConfigInfo = defalutAppConfig
  retConfigData.config = !curConfigData.config
    ? defalutConfigInfo.config
    : curConfigData.config
  retConfigData.appCode = !curConfigData.config
    ? defalutConfigInfo.appCode
    : curConfigData.appCode
  retConfigData.configName = !curConfigData.config
    ? defalutConfigInfo.configName
    : curConfigData.configName
  if (curConfigData.config) {
    let filterConfigKeys = Object.keys(defalutConfigInfo.config).filter(
      (key) => {
        return !curConfigData.config[key]
      }
    )
    if (filterConfigKeys.length > 0) {
      filterConfigKeys.forEach((key) => {
        retConfigData.config[key] = defalutConfigInfo.config[key]
      })
    }
  }
  LOG('校验策略返回的应用配置数据是否完整==>', retConfigData)
  return retConfigData
}


/**
 * 初始化补量组件配置
 */
function initBoostGroupConfig(pageCode) {
  let boostConfig = {
    maxAdCount: 2,
    isShowBoostComp: true,
    isAuditUser: false,
    loopTimes: 30000,
  }
  //  mxt 判断当前的点击间隔 触发不用的弹窗逻辑

  // 根据策略返回的数据 判断是否为审核用户
  let is_reviewer = TACTICS_SDK.getApplyConfig('boost_group_ad_count', 'N', 1)
  boostConfig.isAuditUser = is_reviewer == 1
  let loop_times = Number(TACTICS_SDK.getGlobalData('ad_pool')['distance'])
  boostConfig.loopTimes = loop_times ? loop_times : 30000
  // 根据策略返回的补量池配置 判断是否开启轮巡补量
  try {
    let _scene_list = TACTICS_SDK.getGlobalData('ad_pool')['scene_list']
    LOG('CUSTOM', 'initBoostGroupConfig==>_scene_list', _scene_list, pageCode)
    let _filter_scene =
      _scene_list && _scene_list.length > 0
        ? _scene_list.filter((item) => item.page_code == pageCode)
        : []

    LOG(
      'CUSTOM',
      'initBoostGroupConfig==>_filter_scene',
      _filter_scene,
      pageCode
    )
    if (_filter_scene.length > 0) {
      //当前页面补量是否展示
      let _is_open = _filter_scene[0]['is_open']
      //当前页面补量池最大请求成功广告个数
      let _upper_num = _filter_scene[0]['upper_num']
      boostConfig.maxAdCount = Number(_upper_num)
      boostConfig.isShowBoostComp = _is_open == 1
    } else {
      // 默认最大请求个数2 不轮询 展示广告组件
      boostConfig.maxAdCount = 2
      boostConfig.isShowBoostComp = true
      boostConfig.loopTimes = 30000
    }
  } catch (error) {
    LOG('CUSTOM', 'initBoostGroupConfig==>error', error)
    boostConfig.maxAdCount = 2
    boostConfig.isShowBoostComp = true
    boostConfig.loopTimes = 30000
  }
  return boostConfig
}
/**
 * 获取策略弹窗code
 * @param {Object} context 上下文
 * @param {String} obj.pageCode 页面code
 * @param {String} obj.pageOrigin 来源code
 * @param {String} obj.actionCode 事件code
 * @param {String} obj.popupCode 弹窗code
 */
function getPopupCodeByTacticsSdk(context, obj) {
  let cxt = context
  return new Promise((resolve, reject) => {
    tacticsSdkInit(cxt)
      .then((res) => {
        let code = TACTICS_SDK.getPopupCodeByPageInfo({
          pageCode: obj.pageCode,
          pageOrigin: obj.pageOrigin,
          actionCode: obj.actionCode,
          popupCode: obj.popupCode ? obj.popupCode : '',
        })
        code ? resolve(code) : reject(false)
      })
      .catch((error) => {
        reject(false)
      })
  })
}

/**
 * 策略路由sdk初始化
 * @param {Object} context 上下文 通常用于this.$app.$def
 */
function tacticsSdkInit(context) {
  let cxt = context
  LOG('tacticsSdkInit======>begin')
  return new Promise((resolve, reject) => {
    if (!tactics_sdk_data.isTacticsSdkInit) {
      LOG('tacticsSdkInit======>in')
      TACTICS_SDK.initSdk({
        secretKey:
          process.env.NODE_ENV == 'development'
            ? secretKeyConfig.dev
            : secretKeyConfig.pro,
        android: cxt.android,
        oaid: cxt.oaid,
        deviceInfo: cxt.deviceInfo,
        channelId: cxt.channelId,
        linkId: cxt.linkId,
        hapKey: cxt.hapKey ? cxt.hapKey : cxt.uniqueId,
        intendedUser: 0,
        deepLinkAccess: Number(cxt.intent) > 0 ? Number(cxt.intent) - 1 : 0,
        materialType: cxt.materialType,
        ideasId: cxt.utm_content,
        planId: cxt.utm_ad_id,
        mediaId: cxt.utm_source,
        sourceId: cxt.sourceId,
        adHonorPower: GLOBAL_UTILS.global_data.adHonorPower
      })
        .then((res) => {
          LOG('tacticsSdkInit======>in', res)

          TACTICS_SDK.setGlobalData(
            'configInfo',
            validataTacticSdkConfigInfo(res.configInfo)
          )
          tactics_sdk_data.auditOnline = res.reviewStatus
          tactics_sdk_data.tacticsName = res.tacticsInfo.tacticsName
            ? res.tacticsInfo.tacticsName
            : ''
          REPORT_SDK.set_attr('ext_field_5', res.vistisTimesToday + '') // 更新访问次数
          AD_UTILS.change_ad_utils_data({
            TIMES: TACTICS_SDK.getApplyConfig('ads_show_interval_min', 'N', 2000)
          })

          AD_SDK.updataAdGlobalData({ tacticsName: cxt.tacticsName }) // 更新广告SDK策略
          tactics_sdk_data.isTacticsSdkInit = true
          if (res.tacticsType) {
            let _result = ''
            let _scene_name = ''
            let _page_url = '' //路由名称
            let _page_type = '' //配置名称
            let _ad_name = '' //广告配置名称
            switch (Number(res.tacticsType)) {
              case 1:
                _result = '成功'
                _scene_name = tactics_sdk_data.tacticsName
                _page_url =
                  res.routesInfo && res.routesInfo.routerName
                    ? res.routesInfo.routerName
                    : '路由配置名称不存在'
                _page_type =
                  res.configInfo && res.configInfo.configName
                    ? res.configInfo.configName
                    : '应用配置名称不存在'
                _ad_name =
                  res.general_ad_pos && res.general_ad_pos.ad_name
                    ? res.general_ad_pos.ad_name
                    : '广告配置名称不存在'
                break
              case 2:
                _result = '失败'
                break
              case 3:
                _result = `失败:${res.tacticsError}`
                break
            }
            REPORT_SDK.set_attr('ext_field_10', res.tacticsInfo.marketingTacticsName || '本地默认营销策略')
            REPORT_SDK.set_attr('ext_field_4', _page_type) //更新上报应用配置
            REPORT_SDK.set_attr('ext_field_7', _ad_name) //更新上报广告配置名称
            COMMON_REPORT_UTILS.strategy_obtain_report(
              _result,
              _page_url,
            )
            getAdApply()
          }
          resolve(true)
        })
        .catch((error) => {
          resolve(false)
        })
    } else {
      LOG('tacticsSdkInit======>has to out')
      resolve(true)
    }
  })
}
const getAdApply = () => {
  AD_SDK.ad_sdk_global.requestNumLimit = TACTICS_SDK.getApplyConfig(
    'ad_request_num_hw',
    'n'
  )
  AD_SDK.ad_sdk_global.requestTimeLimit = TACTICS_SDK.getApplyConfig(
    'ad_request_time_hw',
    'n'
  )
  AD_SDK.ad_sdk_global.isSilent = TACTICS_SDK.getApplyConfig(
    'is_silent',
    'B',
    false
  )
  AD_SDK.ad_sdk_global.switchN = TACTICS_SDK.getApplyConfig('switch_n', 'n')
  AD_SDK.ad_sdk_global.switchT = TACTICS_SDK.getApplyConfig('switch_t', 'n', 300)
  AD_SDK.ad_sdk_global.switchA = TACTICS_SDK.getApplyConfig('switch_a', 'n', 2)
}
/**
 * 获取策略路由
 * @param {Object} context 上下文
 * @param {String} curPageRouter 页面code
 */
function getPageBackRouterByTacticsSdk(context, curPageRouter) {
  let cxt = context
  return new Promise((resolve, reject) => {
    tacticsSdkInit(cxt)
      .then((res) => {
        let code = TACTICS_SDK.getPageBackRouter(curPageRouter)
        code ? resolve(code) : reject(false)
      })
      .catch((error) => {
        reject(false)
      })
  })
}
/**
 * 获取公共弹窗完整code
 * @param {Object} context 上下文
 * @param {String} obj.popupPrefix 页面code
 */
function getCommonPopupByPopupPrefix(context, obj) {
  let cxt = context
  return new Promise((resolve, reject) => {
    tacticsSdkInit(cxt)
      .then((res) => {
        let code = TACTICS_SDK.getCommonPopupCodeByPrefix(obj)
        code ? resolve(code) : reject(false)
      })
      .catch((error) => {
        reject(false)
      })
  })
}
/**
 * 获取页面 公共弹窗完整code
 * @param {Object} context 上下文
 * @param {String} obj.pageCode 页面code
 * @param {String} obj.popupPrefix 页面code
 */
function getPageCommonPopupCodeByPrefix(context, obj) {
  let cxt = context
  return new Promise((resolve, reject) => {
    if (Number(tactics_sdk_data.auditOnline) == 1) {
      let code1 = ''
      // let pageCommonPopList = process.env.NODE_ENV == 'development' ? ['SignIn_RFC7uld9', 'Box_u68mK5NU'] : ['Box_fB4mv61T', 'SignIn_PO0msjJq']
      let pageCommonPopList = ['Box_fB4mv61T', 'SignIn_PO0msjJq']
      let tempArr = pageCommonPopList.filter(
        (ele) => ele.split('_')[0] == obj.popupPrefix
      )
      if (tempArr.length > 0) {
        code1 = tempArr[0]
      }
      LOG(
        `审核模式 TACTICE_SDK->前缀为${obj.popupPrefix}的弹窗完整code为${tempArr[0]}`
      )
      code1 ? resolve(code1) : reject(false)
    } else {
      tacticsSdkInit(cxt)
        .then((res) => {
          let code = TACTICS_SDK.getPageCommonPopupCodeByPrefix(obj)
          code ? resolve(code) : reject(false)
        })
        .catch((error) => {
          reject(false)
        })
    }
  })
}
/**
 * 获取弹窗配置
 * @param code 弹窗code
 */
function getPopupConfigByPopupCode(code, popKey = '') {
  LOG('CUSTOM', `getPopupConfigByPopupCode==>${code}`)
  return new Promise(async (resolve, reject) => {
    if (
      tactics_sdk_data.popupConfigData &&
      tactics_sdk_data.popupConfigData[`${code}`]
    ) {
      let _codeFront = code.split('_')[0].toLowerCase()
      let _popDataArr = tactics_sdk_data.popupConfigData[`${code}`]
      let _findPopKeyIndex = -1 //查询传入的popkey的位置
      let _showTimes = 0 //弹窗展示次数
      if (popKey) {
        _findPopKeyIndex = _popDataArr.findIndex(
          (item) => item.popKey == popKey
        )
        if (_findPopKeyIndex !== -1) {
          _showTimes = _findPopKeyIndex
        } else {
          _showTimes = await TACTICS_SDK.gePopupShowTimes(code)
        }
      } else {
        _showTimes = await TACTICS_SDK.gePopupShowTimes(code)
      }

      let _curConfig = {}
      switch (_codeFront) {
        case 'custom':
        case 'customback':
          _curConfig = _popDataArr[_showTimes % _popDataArr.length]
          _curConfig = Object.assign(
            {},
            { code: code, popup_name: _curConfig.popName },
            _curConfig
          )
          _curConfig = customPopConfig2CommonPopConfig(
            code.indexOf('Back') !== -1 ? 'CUSTOM_BACK' : 'CUSTOM',
            _curConfig
          )
          resolve(JSON.parse(JSON.stringify(_curConfig)))
          break
        case 'common':
        case 'adcustom':
        case 'encourage':
        case 'baidu':
          _curConfig = _popDataArr[_showTimes % _popDataArr.length]
          _curConfig = Object.assign(
            {},
            {
              code: code,
              popup_name: _curConfig.popName,
              popType: _codeFront,
            },
            _curConfig
          )
          resolve(JSON.parse(JSON.stringify(_curConfig)))
          break
        default:
          LOG('CUSTOM', `本地存储 传入的弹窗code无效,code=${code}`)
          console.error(
            `本地存储 tactics_sdk_utils.js 函数getPopupConfigByPopupCode 传入的弹窗code无效,code=${code}`
          )
          resolve()
          break
      }
    } else {
      let _curConfig = {}
      let showTimes = 0
      let popDataArr = []
      let _findPopKeyIndex = -1
      if (code.indexOf('Custom') !== -1) {
        popDataArr = await TACTICS_SDK[
          code.indexOf('Back') !== -1 ? 'geBackPopupData' : 'getCustomPopupData'
        ](code)
        tactics_sdk_data.popupConfigData[`${code}`] = popDataArr
        showTimes = await TACTICS_SDK.gePopupShowTimes(code)
        _curConfig = popDataArr[showTimes % popDataArr.length]
        _curConfig = customPopConfig2CommonPopConfig(
          code.indexOf('Back') !== -1 ? 'CUSTOM_BACK' : 'CUSTOM',
          _curConfig
        )
        _curConfig = Object.assign(
          {},
          { code: code, popup_name: _curConfig.popName },
          _curConfig
        )
        resolve(JSON.parse(JSON.stringify(_curConfig)))
      } else if (code.indexOf('Common') !== -1) {
        popDataArr = await TACTICS_SDK['getCommonNativePopupData'](code)
        tactics_sdk_data.popupConfigData[`${code}`] = popDataArr
        _findPopKeyIndex = popDataArr.findIndex((item) => item.popKey == popKey)
        if (popKey) {
          _findPopKeyIndex = _popDataArr.findIndex(
            (item) => item.popKey == popKey
          )
          if (_findPopKeyIndex !== -1) {
            showTimes = _findPopKeyIndex
          } else {
            showTimes = await TACTICS_SDK.gePopupShowTimes(code)
          }
        } else {
          showTimes = await TACTICS_SDK.gePopupShowTimes(code)
        }
        _curConfig = popDataArr[showTimes % popDataArr.length]
        _curConfig = Object.assign(
          {},
          { code: code, popup_name: _curConfig.popName, popType: 'common' },
          _curConfig
        )
        resolve(JSON.parse(JSON.stringify(_curConfig)))
      } else if (code.indexOf('Adcustom') !== -1) {
        popDataArr = await TACTICS_SDK['getCommonNativePopupData'](code)
        tactics_sdk_data.popupConfigData[`${code}`] = popDataArr
        _findPopKeyIndex = popDataArr.findIndex((item) => item.popKey == popKey)
        if (popKey) {
          _findPopKeyIndex = _popDataArr.findIndex(
            (item) => item.popKey == popKey
          )
          if (_findPopKeyIndex !== -1) {
            showTimes = _findPopKeyIndex
          } else {
            showTimes = await TACTICS_SDK.gePopupShowTimes(code)
          }
        } else {
          showTimes = await TACTICS_SDK.gePopupShowTimes(code)
        }
        _curConfig = popDataArr[showTimes % popDataArr.length]
        _curConfig = Object.assign(
          {},
          { code: code, popup_name: _curConfig.popName, popType: 'adcustom' },
          _curConfig
        )
        resolve(JSON.parse(JSON.stringify(_curConfig)))
      } else if (code.indexOf('Encourage') !== -1) {
        popDataArr = await TACTICS_SDK['getEncouragePopupData'](code)
        tactics_sdk_data.popupConfigData[`${code}`] = popDataArr
        _findPopKeyIndex = popDataArr.findIndex((item) => item.popKey == popKey)
        if (popKey) {
          _findPopKeyIndex = _popDataArr.findIndex(
            (item) => item.popKey == popKey
          )
          if (_findPopKeyIndex !== -1) {
            showTimes = _findPopKeyIndex
          } else {
            showTimes = await TACTICS_SDK.gePopupShowTimes(code)
          }
        } else {
          showTimes = await TACTICS_SDK.gePopupShowTimes(code)
        }
        _curConfig = popDataArr[showTimes % popDataArr.length]
        _curConfig = Object.assign(
          {},
          { code: code, popup_name: _curConfig.popName, popType: 'encourage' },
          _curConfig
        )
        resolve(JSON.parse(JSON.stringify(_curConfig)))
      } else if (code.split('_')[0] == 'Baidu') {
        popDataArr = await TACTICS_SDK['getBaiduPopupData'](code)
        tactics_sdk_data.popupConfigData[`${code}`] = popDataArr
        _findPopKeyIndex = popDataArr.findIndex((item) => item.popKey == popKey)
        if (popKey) {
          _findPopKeyIndex = _popDataArr.findIndex(
            (item) => item.popKey == popKey
          )
          if (_findPopKeyIndex !== -1) {
            showTimes = _findPopKeyIndex
          } else {
            showTimes = await TACTICS_SDK.gePopupShowTimes(code)
          }
        } else {
          showTimes = await TACTICS_SDK.gePopupShowTimes(code)
        }
        _curConfig = popDataArr[showTimes % popDataArr.length]
        _curConfig = Object.assign(
          {},
          { code: code, popup_name: _curConfig.popName, popType: 'baidu' },
          _curConfig
        )
        resolve(JSON.parse(JSON.stringify(_curConfig)))
      } else {
        LOG('CUSTOM', `传入的弹窗code无效,code=${code}`)
        console.error(
          `tactics_sdk_utils.js 函数getPopupConfigByPopupCode 传入的弹窗code无效,code=${code}`
        )
        resolve()
      }
    }
  })
}
/**
 * 自定义弹窗数据转换成通用弹窗数据
 * @param {String} type 弹窗类型
 * @param {Object} pop_config 弹窗数据
 * @returns 转换后的通用弹窗数据
 */
function customPopConfig2CommonPopConfig(type, pop_config) {
  LOG('CUSTOM', '==>', 777, ...arguments)
  let new_pop_config = {}
  switch (type) {
    case 'CUSTOM_BACK':
      new_pop_config = customBack2Common(pop_config)
      LOG('CUSTOM', '==>', 999, new_pop_config)
      break
    case 'CUSTOM':
      new_pop_config = custom2Common(pop_config)
      LOG('CUSTOM', '==>', 101010, new_pop_config)
      break
  }
  return new_pop_config
}
/**
 * 自定义后退弹窗数据转换成通用弹窗数据
 * @param {Object} pop_config 自定义后退弹窗数据
 * @returns 转换后的通用弹窗数据
 */
function customBack2Common(pop_config) {
  let new_pop_config = {}
  new_pop_config = {
    popType: 'customBack',
    popGroupName: pop_config.popGroupName, //弹窗组
    popName: pop_config.popName, //弹窗名称
    popKey: pop_config.popKey, //弹窗key
    btnBackIsDisplay: false, //返回按钮开关
    closeStyle: {
      //关闭按钮样式
      isShow: true, //是否展示
      width: pop_config.closeStyle.closeWidth, //宽度
      height: pop_config.closeStyle.closeHeight, //高度
      distance: 50, //关闭按钮距离下面元素的高度 这个默认给50 不用再配置项内配置
      position: pop_config.closeStyle.closePosition, //位置 1 上 2 下 3 左上 4 右下
      delay: pop_config.closeStyle.closeDelay, //关闭按钮延时生效时间
      opacity: pop_config.closeStyle.closeOpacity, //透明度
      top: pop_config.closeStyle.closeTop, //关闭按钮图标超出弹窗高度
      image: pop_config.closeIcon, //关闭按钮图片地址
    },
    crowdStyle: {
      //挤动文案样式
      isShow: pop_config.crowdStyle.crowdSwitch == 1, //是否展示
      width: 750, //宽度
      height: pop_config.crowdStyle.crowdHeight, //高度
      color: pop_config.crowdStyle.crowdTextColor, //文字颜色
      text: pop_config.crowdStyle.crowdText, //文案
      distance: pop_config.crowdStyle.crowdDistance, //挤动间距
      position: pop_config.crowdStyle.crowdTextPosition, //位置 1 上 2 下
      delay: pop_config.crowdStyle.crowdDelay, //挤动文案延时展示时间
      // image:'https://cldevimg.senbowl.top/image%2F2022-06-28%2F1656399103317_button.png',
      image: '', //延时图片地址
      font: pop_config.crowdStyle.crowdFont, //字体大小
      between: 30, //文案据弹窗初始距离
    },
    popStyle: {
      //内弹窗图片样式
      height: pop_config.popHeight, //高度
      width: 750, //宽度
      image: pop_config.boxBg, //地址
    },
    btnStyle: {
      //正向按钮样式
      width: pop_config.btnStyle.btnWidth, //宽度
      height: pop_config.btnStyle.btnHeight, //高度
      radio: pop_config.btnStyle.btnRadius, //圆角
      image: pop_config.btnIcon, //背景图片地址
      icon: '', //小icon图片地址
      iconSwitch: 0, //小icon开关 1 开
      hotTop: pop_config.btnStyle.btnHotTop, //向上热区
      hotBottom: pop_config.btnStyle.btnHotBottom, //向下热区
      hotAbout: pop_config.btnStyle.btnHotAbout, //向左右热区
      bgColor: '', //背景颜色
      color: pop_config.btnStyle.btnTextColor, //文字颜色
      font: pop_config.btnStyle.btnFont, //字体大小
      text: pop_config.btnStyle.btnText, //文案
      breath: pop_config.btnStyle.btnBreatheSwitch, //呼吸动效 1 开 0关
      jumpKey: pop_config.btnStyle.btnJumpKey, //正向按钮点击后的状态 1 跳转新页面 2按策略路由返回  3退出应用  4关闭弹窗
      jumpValue: pop_config.btnStyle.btnJumpValue, //跳转新页面页面code 只在1的情况下会存在
      top: pop_config.btnStyle.btnTop, //距上距离
      left: pop_config.btnStyle.btnLeft, //距左距离
    },
    negStyle: {
      //负向按钮
      isShow: true, //开关
      width: pop_config.negStyle.negWidth, //宽度
      height: pop_config.negStyle.negHeight, //高度
      font: pop_config.negStyle.negFont, //字体大小
      color: pop_config.negStyle.negTextColor, //颜色
      left: pop_config.negStyle.negLeft, //距左距离
      top: pop_config.negStyle.negTop, //距上距离
      radio: pop_config.negStyle.negRadius, //圆角
      jumpKey: pop_config.negStyle.negJumpKey, //负向按钮点击后的状态  2按策略路由返回  3退出应用  4关闭弹窗
      text: pop_config.negStyle.negText, //负向文案
      delay: pop_config.negStyle.negDelay, //负向按钮生效时间
      icon: pop_config.negIcon, //负向按钮icon地址
    },
    materialStyle: {
      //广告素材样式
      width: pop_config.materialWidth, //素材宽度
      height: pop_config.materialHeight, //素材高度
      top: pop_config.middleTop, //素材距上高度
    },
    maskStyle: {
      //遮罩样式
      opacity: pop_config.maskOpacity, //遮罩透明度 rgba(0,0,0,0.5)
      image: pop_config.popBg, //遮罩图片地址
    },
    commonStyle: {
      //通用设置
      scale: pop_config.popScale, //弹窗缩放比例
      backLockTime: pop_config.backLockTime, //物理返回锁定时间
    },
    menubarStyle: {
      //遮挡胶囊样式
      isShow: false, //开关
      showType: 2, //遮盖方式 1文案 2图片
      font: 40, //字体大小
      text: '这里是滚动的menubar', //文案
      image:
        'https://cldevimg.senbowl.top/image%2F2022-06-28%2F1656399103317_button.png', //遮挡图片
      width: 750, //遮挡图片宽度
      height: 220, //遮挡图片高度
      radio: 0, //图片遮挡圆角
    },
  }
  return new_pop_config
}
/**
 * 自定义弹窗数据转换成通用弹窗数据
 * @param {Object} pop_config 自定义弹窗数据
 * @returns 转换后的通用弹窗数据
 */
function custom2Common(pop_config) {
  let new_pop_config = {}

  new_pop_config = {
    popType: 'custom',
    popGroupName: pop_config.popGroupName, //弹窗组
    popName: pop_config.popName, //弹窗名称
    popKey: pop_config.popKey, //弹窗key
    btnBackIsDisplay: !!pop_config.btnBackIsDisplay, //返回按钮开关
    closeStyle: {
      //关闭按钮样式
      isShow: true, //是否展示
      width: 60, //宽度
      height: 60, //高度
      distance: 50, //关闭按钮距离下面元素的高度 这个默认给50 不用再配置项内配置
      position: 1, //位置 1 上 2 下 3 左上 4 右下
      delay: pop_config.closeDelay, //关闭按钮延时生效时间
      opacity: 1, //透明度
      top: 0, //关闭按钮图标超出弹窗高度
      image: pop_config.closeIcon, //关闭按钮图片地址
    },
    crowdStyle: {
      //挤动文案样式
      isShow: false, //是否展示
      width: 750, //宽度
      height: 0, //高度
      color: '#ffffff', //文字颜色
      text: '', //文案
      distance: 0, //挤动间距
      position: 1, //位置 1 上 2 下
      delay: 0, //挤动文案延时展示时间
      // image:'https://cldevimg.senbowl.top/image%2F2022-06-28%2F1656399103317_button.png',
      image: '', //延时图片地址
      font: 0, //字体大小
      between: 0, //文案据弹窗初始距离
    },
    popStyle: {
      //内弹窗图片样式
      height: pop_config.popHeight, //高度
      width: 750, //宽度
      image: pop_config.boxBg, //地址
    },
    btnStyle: {
      //正向按钮样式
      width: pop_config.btnStyle.btnWidth, //宽度
      height: pop_config.btnStyle.btnHeight, //高度
      radio: pop_config.btnStyle.btnRadius, //圆角
      image: pop_config.btnStyle.btnBgImage, //背景图片地址
      icon:
        pop_config.btnStyle.btnIcon && pop_config.btnStyle.btnIcon != '0'
          ? pop_config.btnStyle.btnIcon
          : '', //小icon图片地址
      iconSwitch:
        pop_config.btnStyle.btnIcon && pop_config.btnStyle.btnIcon != '0'
          ? 1
          : 0, //小icon开关 1 开
      hotTop: 0, //向上热区
      hotBottom: 0, //向下热区
      hotAbout: 0, //向左右热区
      bgColor: pop_config.btnStyle.btnBgColor, //背景颜色
      color: pop_config.btnStyle.btnTextColor, //文字颜色
      font: pop_config.btnStyle.btnFont, //字体大小
      text: pop_config.btnStyle.btnText, //文案
      breath: pop_config.btnStyle.btnDynamic, //呼吸动效 1 开 0关
      jumpKey: pop_config.btnJumpKey == 'ClosePop' ? 4 : 1, //正向按钮点击后的状态 1 跳转新页面 2按策略路由返回  3退出应用  4关闭弹窗
      jumpValue:
        pop_config.btnJumpKey !== 'ClosePop'
          ? pop_config.btnJumpKey.replace('toPage$$', '')
          : '', //跳转新页面页面code 只在1的情况下会存在
      top: pop_config.btnStyle.btnTop, //距上距离
      left: (750 - pop_config.btnStyle.btnWidth) / 2, //距左距离
    },
    negStyle: {
      //负向按钮
      isShow: pop_config.btnStyle.btnCancelText.length > 0 ? true : false, //开关
      width:
        pop_config.btnStyle.btnCancelText.length *
        (pop_config.btnStyle.btnCancelFont + 2), //宽度
      height: pop_config.btnStyle.btnCancelFont + 2, //高度
      font: pop_config.btnStyle.btnCancelFont, //字体大小
      color: pop_config.btnStyle.btnCancelColor, //颜色
      left:
        (750 -
          pop_config.btnStyle.btnCancelText.length *
          (pop_config.btnStyle.btnCancelFont + 2)) /
        2, //距左距离
      top:
        pop_config.btnStyle.btnTop +
        pop_config.btnStyle.btnHeight +
        pop_config.btnStyle.btnCancelMarginTop, //距上距离
      radio: 0, //圆角
      jumpKey: 4, //负向按钮点击后的状态  2按策略路由返回  3退出应用  4关闭弹窗
      text: pop_config.btnStyle.btnCancelText, //负向文案
      delay: 0, //负向按钮生效时间
      icon: '', //负向按钮icon地址
    },
    materialStyle: {
      //广告素材样式
      width: pop_config.materialWidth, //素材宽度
      height: pop_config.materialHeight, //素材高度
      top: pop_config.middleTop, //素材距上高度
    },
    maskStyle: {
      //遮罩样式
      opacity: pop_config.maskOpacity, //遮罩透明度 rgba(0,0,0,0.5)
      image: pop_config.popBg, //遮罩图片地址
    },
    commonStyle: {
      //通用设置
      scale: pop_config.popScale, //弹窗缩放比例
      backLockTime: pop_config.backLockTime, //物理返回锁定时间
    },
    menubarStyle: {
      //遮挡胶囊样式
      isShow: false, //开关
      showType: 1, //遮盖方式 1文案 2图片
      font: 40, //字体大小
      text: '这里是滚动的menubar', //文案
      image:
        'https://cldevimg.senbowl.top/image%2F2022-06-28%2F1656399103317_button.png', //遮挡图片
      width: 750, //遮挡图片宽度
      height: 400, //遮挡图片高度
      radio: 0, //图片遮挡圆角
    },
  }
  return new_pop_config
}

// 获取行为弹窗code
/**
 *
 * @param {string} action
 * @param {string} pageCode
 * @param {string} pageOrigin
 * @param {string} adStatus
 * @returns {string}
 */
function getActionPopupCode(action, adStatus, pageCode, pageOrigin) {
  return new Promise(async (resolve, reject) => {
    try {
      let actionPopupCode = await TACTICS_SDK.getActionPopupCode(
        action,
        adStatus,
        pageCode,
        pageOrigin
      )
      LOG(' 策略sdk ：maxt actionPopupCode', actionPopupCode)
      resolve({
        code: actionPopupCode,
        adStatus: adStatus,
      })
    } catch (error) {
      reject(error)
    }
  })
}
/**
 *
 * @param {*} pageCode  页面code
 * @param {*} pageOrigin  页面来源
 * @param {*} actionCode  行为
 * @param {*} popupCode  当前弹窗code
 */
function getOriginalPopCode(pageCode, pageOrigin, actionCode, popupCode) {
  return new Promise(async (resolve, reject) => {
    try {
      let originalPopCode = await TACTICS_SDK.getOriginalPopCode(
        pageCode,
        pageOrigin,
        actionCode,
        popupCode
      )
      LOG(' 策略sdk ：maxt originalPopCode', originalPopCode)
      resolve(originalPopCode)
    } catch (error) {
      reject(error)
    }
  })
}
export default {
  validataTacticSdkConfigInfo,
  getPopupCodeByTacticsSdk,
  tacticsSdkInit,
  getPageBackRouterByTacticsSdk,
  getCommonPopupByPopupPrefix,
  getPageCommonPopupCodeByPrefix,
  getPopupConfigByPopupCode,
  getActionPopupCode,
  getOriginalPopCode,
  initBoostGroupConfig,
  tactics_sdk_data,
}
